***************************************
*          @@  FLEX 3 @@              *                  
*                                     *
*   ------ >> Chapitre 12 << ------    *
*                                     *
***************************************


<!-- FORMULAIRE !-->
	<mx:Panel x="10" y="10" width="337" height="220" layout="absolute" title="HTTPService">
	    <mx:Form x="10" y="10" width="297" height="80" horizontalScrollPolicy="off" verticalScrollPolicy="off">
	        <mx:FormItem label="Prnom :" width="272">
	            <mx:TextInput width="200" id="prenom_txt"/>
	        </mx:FormItem>
	        <mx:FormItem label="Nom :" width="272">
	            <mx:TextInput width="200" id="nom_txt"/>
	        </mx:FormItem>
	    </mx:Form>

	    <mx:Button x="242" y="96" label="Valider" id="btn_valider" click="executerService()"/>

	    <mx:TextInput x="10" y="141" width="297" id="resultat_txt"/>
	</mx:Panel>
<!-- DCLARATION DU SERVICE !-->
<mx:HTTPService id="service" 
	    url="http://localhost/PHP/HHTPService/HTTPService.php"
	    result="reponseOK(event)"
	    fault="reponseKO(event)"
	    resultFormat="e4x"
	    method="POST">
	
	    <!AFFECTATION DES PARAMTRES !-->
	    <mx:request xmlns="*">
	    <prenom>{prenom_txt.text}</prenom>
	    <nom>{nom_txt.text}</nom>
	    </mx:request>
	</mx:HTTPService>
var listeAvions = <avions>
	    <appareil id=1>Storch</appareil>
    <appareil id=2>Cesna</appareil>
</avions>
listeAvions.appareil[0].@id
<?php
//--- SERVICE PHP -----

// Rcupration des paramtres
$prenom = $_POST["prenom"];
$nom = $_POST["nom"];

// Traitement
$traitement = "Bonjour ".$prenom." ".$nom;

// Formatage de la rponse
$reponse = "<HTTPService>";
$reponse .= "<reponse>";
$reponse .= "<resultat>".$traitement."</resultat>";
$reponse .= "</reponse>";
$reponse .= "</HTTPService>";

// Envoi de la rponse
print $reponse;

?>
<HTTPService>
	    <reponse>
	        <resultat> bonjour prenom nom </resultat>
	    </reponse>
<HTTPService>
print $reponse;
<mx:Script>
	    <![CDATA[
	        import mx.controls.Alert;
	        import mx.rpc.events.FaultEvent;
        import mx.rpc.events.ResultEvent;

        // Excution du service
	        public function executerService():void{
	            service.send();
	        }

	        public function reponseOK(event:ResultEvent):void{
	            var reponseXML:XML = event.result as XML;
	            resultat_txt.text = String(reponseXML.reponse.resultat);
	        }

	        public function reponseKO(event:FaultEvent):void{
	            Alert.show ("Erreur ! : "+event.fault.message)
	        }
    ]]>
</mx:Script>
<?xml version="1.0" encoding="utf-8" ?>

-<wsdl:definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://www.webserviceX.NET/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" targetNamespace="http://www.webserviceX.NET/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
    - <wsdl:types>
        - <s:schema elementFormDefault="qualified" targetNamespace="http://www.webserviceX.NET/">
            - <s:element name="ConvertTemp">
                - <s:complexType>
                    - <s:sequence>
                        <s:element minOccurs="1" maxOccurs="1" name="Temperature" type="s:double" /> 
                        <s:element minOccurs="1" maxOccurs="1" name="FromUnit" type="tns:TemperatureUnit" /> 
                        <s:element minOccurs="1" maxOccurs="1" name="ToUnit" type="tns:TemperatureUnit" /> 
                    </s:sequence>
                </s:complexType>
            </s:element>
            - <s:simpleType name="TemperatureUnit">
                - <s:restriction base="s:string">
                    <s:enumeration value="degreeCelsius" /> 
                    <s:enumeration value="degreeFahrenheit" /> 
                    <s:enumeration value="degreeRankine" /> 
                    <s:enumeration value="degreeReaumur" /> 
                    <s:enumeration value="kelvin" /> 
                </s:restriction>
            </s:simpleType>
            - <s:element name="ConvertTempResponse">
                - <s:complexType>
                    - <s:sequence>
                        <s:element minOccurs="1" maxOccurs="1" name="ConvertTempResult" type="s:double" /> 
                    </s:sequence>
                </s:complexType>
            </s:element>
            <s:element name="double" type="s:double" />
        </s:schema>
    </wsdl:types>
    - <wsdl:message name="ConvertTempSoapIn">
        <wsdl:part name="parameters" element="tns:ConvertTemp" /> 
    </wsdl:message>
    - <wsdl:message name="ConvertTempSoapOut">
        <wsdl:part name="parameters" element="tns:ConvertTempResponse" /> 
    </wsdl:message>
    - <wsdl:message name="ConvertTempHttpGetIn">
        <wsdl:part name="Temperature" type="s:string" /> 
        <wsdl:part name="FromUnit" type="s:string" /> 
        <wsdl:part name="ToUnit" type="s:string" /> 
    </wsdl:message>
    - <wsdl:message name="ConvertTempHttpGetOut">
        <wsdl:part name="Body" element="tns:double" /> 
    </wsdl:message>
    - <wsdl:message name="ConvertTempHttpPostIn">
        <wsdl:part name="Temperature" type="s:string" /> 
        <wsdl:part name="FromUnit" type="s:string" /> 
        <wsdl:part name="ToUnit" type="s:string" /> 
    </wsdl:message>
    - <wsdl:message name="ConvertTempHttpPostOut">
        <wsdl:part name="Body" element="tns:double" /> 
    </wsdl:message>
    - <wsdl:portType name="ConvertTemperatureSoap">
        - <wsdl:operation name="ConvertTemp">
            <wsdl:input message="tns:ConvertTempSoapIn" /> 
            <wsdl:output message="tns:ConvertTempSoapOut" /> 
        </wsdl:operation>
    </wsdl:portType>
    - <wsdl:portType name="ConvertTemperatureHttpGet">
        - <wsdl:operation name="ConvertTemp">
        <wsdl:input message="tns:ConvertTempHttpGetIn" /> 
        <wsdl:output message="tns:ConvertTempHttpGetOut" /> 
        </wsdl:operation>
    </wsdl:portType>
    - <wsdl:portType name="ConvertTemperatureHttpPost">
        - <wsdl:operation name="ConvertTemp">
        <wsdl:input message="tns:ConvertTempHttpPostIn" /> 
        <wsdl:output message="tns:ConvertTempHttpPostOut" /> 
        </wsdl:operation>
    </wsdl:portType>
    - <wsdl:binding name="ConvertTemperatureSoap" type="tns:ConvertTemperatureSoap">
        <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
    - <wsdl:operation name="ConvertTemp">
        <soap:operation soapAction="http://www.webserviceX.NET/ConvertTemp" style="document" />
    - <wsdl:input>
        <soap:body use="literal" /> 
    </wsdl:input>
    - <wsdl:output>
    <soap:body use="literal" /> 
    </wsdl:output>
    </wsdl:operation>
    </wsdl:binding>
    - <wsdl:binding name="ConvertTemperatureHttpGet" type="tns:ConvertTemperatureHttpGet">
        <http:binding verb="GET" /> 
    - <wsdl:operation name="ConvertTemp">
        <http:operation location="/ConvertTemp" /> 
        - <wsdl:input>
            <http:urlEncoded /> 
        </wsdl:input>
        - <wsdl:output>
            <mime:mimeXml part="Body" /> 
        </wsdl:output>
    </wsdl:operation>
    </wsdl:binding>
    - <wsdl:binding name="ConvertTemperatureHttpPost" type="tns:ConvertTemperatureHttpPost">
        <http:binding verb="POST" /> 
        - <wsdl:operation name="ConvertTemp">
            <http:operation location="/ConvertTemp" /> 
        - <wsdl:input>
            <mime:content type="application/x-www-form-urlencoded" /> 
        </wsdl:input>
        - <wsdl:output>
            <mime:mimeXml part="Body" /> 
        </wsdl:output>
    </wsdl:operation>
    </wsdl:binding>
    - <wsdl:service name="ConvertTemperature">
        - <wsdl:port name="ConvertTemperatureSoap" binding="tns:ConvertTemperatureSoap">
            <soap:address location="http://www.webservicex.net/ConvertTemperature.asmx" /> 
        </wsdl:port>
        - <wsdl:port name="ConvertTemperatureHttpGet" binding="tns:ConvertTemperatureHttpGet">
            <http:address location="http://www.webservicex.net/ConvertTemperature.asmx" /> 
        </wsdl:port>
        - <wsdl:port name="ConvertTemperatureHttpPost" binding="tns:ConvertTemperatureHttpPost">
            <http:address location="http://www.webservicex.net/ConvertTemperature.asmx" /> 
        </wsdl:port>
    </wsdl:service>
</wsdl:definitions>
- <wsdl:message name="ConvertTempHttpGetIn">
    <wsdl:part name="Temperature" type="s:string" />
    <wsdl:part name="FromUnit" type="s:string" />
    <wsdl:part name="ToUnit" type="s:string" />
</wsdl:message>

- <wsdl:message name="ConvertTempHttpPostIn">
    <wsdl:part name="Temperature" type="s:string" />
    <wsdl:part name="FromUnit" type="s:string" />
    <wsdl:part name="ToUnit" type="s:string" />
</wsdl:message>
<s:element name="double" type="s:double" />

- <wsdl:message name="ConvertTempHttpGetOut">
    <wsdl:part name="Body" element="tns:double" />
</wsdl:message>

- <wsdl:message name="ConvertTempHttpPostOut">
    <wsdl:part name="Body" element="tns:double" />
</wsdl:message>
- <wsdl:portType name="ConvertTemperatureHttpGet">
    - <wsdl:operation name="ConvertTemp">
        <wsdl:input message="tns:ConvertTempHttpGetIn" />
        <wsdl:output message="tns:ConvertTempHttpGetOut" />
    </wsdl:operation>
</wsdl:portType>

- <wsdl:portType name="ConvertTemperatureHttpPost">
    - <wsdl:operation name="ConvertTemp">
        <wsdl:input message="tns:ConvertTempHttpPostIn" />
        <wsdl:output message="tns:ConvertTempHttpPostOut" />
    </wsdl:operation>
</wsdl:portType>
<mx:Panel x="10" y="10" width="379" height="183" layout="absolute" title="WebService : Conversion de temprature">
	    <mx:Button x="10" y="105" label="Convertir" id="btn_executer" click="executerWebService()" width="339"/>
	    <mx:Form x="10" y="10" width="339" height="87" horizontalScrollPolicy="off" verticalScrollPolicy="off">
	        <mx:FormItem label="Temprature en degrs Celsius :">
	            <mx:TextInput width="79" id="degresC_txt"/>
	        </mx:FormItem>
	        <mx:FormItem label="Temprature en degrs Fahrenheit :">
	            <mx:TextInput width="81" editable="false" enabled="true" id="degresF_txt"/>
	        </mx:FormItem>
	    </mx:Form>
	</mx:Panel>
<mx:WebService
	    id="serviceConversion"
	    wsdl="http://www.webservicex.net/ConvertTemperature.asmx?WSDL">
	 
	    <mx:operation name="ConvertTemp" resultFormat="object"
	        fault="resultatKO(event)"
	        result="resultatOK(event)"/>
	
</mx:WebService>
<mx:Script>
	    <![CDATA[
	        import mx.controls.Alert;
	        import mx.rpc.events.ResultEvent;
	        import mx.rpc.events.FaultEvent;
	
	        // Procdure affichant lerreur dexcution
	        public function resultatKO(e:FaultEvent):void{
	            Alert.show("ERREUR "+e.fault.faultString);
	        }
	
	        // Rcupration du rsultat envoy par le service web
	        public function resultatOK(e:ResultEvent):void
	        {
	            degresF_txt.text=String(e.result);
	        }

	        // Excution du service
	        public function executerWebService():void
	        {
	            var temperature:String = degresC_txt.text;
	            var uniteSource:String = "degreeCelsius";
	            var uniteConversion:String = "degreeFahrenheit";

	            // Appel du service
	            serviceConversion.ConvertTemp(temperature,uniteSource,uniteConversion);
	        }
	    ]]>
</mx:Script>
serviceConversion.ConvertTemp(temperature,uniteSource,uniteConversion);
<mx:RemoteObject id="identifiant"
	    source="classe  utiliser" endpoint="URL de la classe">
	
<mx:method name="nom de la mthode de la classe  excuter" result="procdure  excuter en cas de succs dexcution de la mthode" fault="procdure  excuter en cas dchec dexcution de la mthode"></mx:method>

</mx:RemoteObject>
import mx.rpc.remoting.mxml.RemoteObject;
var service:RemoteObject = new RemoteObject();
	service.endpoint = adresse de la classe  utiliser;
	service.source="classe  utiliser";
service.nom_de_la_methode();
	service.nom_de_la_methode.addEventListener("result", procdure  excuter en cas de succs dexcution de la mthode);
	service.nom_de_la_methode.addEventListener("fault", procdure  excuter en cas dchec dexcution de la mthode)

